package cn.tedu.nio.buffer;
import java.nio.ByteBuffer;

public class ByteBufferDemo {
    public static void main(String[] args) {
        ByteBuffer buffer = ByteBuffer.allocate(10);
        // 缓冲区的容量位
        System.out.println(buffer.capacity());
        // 缓冲区的操作位
        System.out.println(buffer.position());
        // 缓冲区的限制位
        System.out.println(buffer.limit());

        // 添加数据
        buffer.put("abc".getBytes());
        buffer.put("def".getBytes());

        // 设置position的位置
//        buffer.position(0);

        // 读取数据
//        byte b1 = buffer.get();
//        System.out.println(b1);
//        System.out.println(buffer.get());

        // 翻转缓冲区
        // 遍历缓冲区, 需要先将限制位挪到当前操作的位置
//        buffer.limit(buffer.position());
        // 将操作位归零
//        buffer.position(0);
        // 上面两行代码等价于:
        buffer.flip();

        // while (buffer.position() < buffer.limit()) 等价于:
        while (buffer.hasRemaining()) {
            byte b = buffer.get();
            System.out.println(b);
        }
    }
}
